#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 2e5 + 10;
int n, k;
int nex[maxn]; // 传送到的下一个位置
int ind[maxn];
int dp[maxn]; // 距离该分支上的叶子节点的最大距离
int ans;
void topo(){
	queue<int> q;
	for(int i=2;i<=n;i++){
		if(ind[i]==0){
			q.push(i);
		}
	}
	while(!q.empty()){
		int from=q.front();q.pop();
		if(from==1){
			break;
		}
		int to=nex[from];
		if(dp[from]==k-1&&to!=1){
			ans++;
			dp[from]=-1;
		}
		dp[to]=max(dp[to], dp[from]+1);
		ind[to]--;
		if(ind[to]==0){
			q.push(to);
		}
	}
}


void solve(){
	cin>>n>>k;
	cin>>nex[1];
	if(nex[1]!=1){ // 1 的下一个节点必须是 1
		ans++;
		nex[1]=1;
		ind[1]=1;
	}
	for(int i=2;i<=n;i++){
		cin>>nex[i]; 
		ind[nex[i]]++; // 入度
	}
	
	topo();
	cout<<ans<<'\n';
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
